package algorithm.easy;


/**
 * @author 江岸
 * @version V1.0
 * @ClassName: PivotIndex724
 * @description: 给定一个整数类型的数组 nums，请编写一个能够返回数组 “中心索引” 的方法。
 *
 * 我们是这样定义数组 中心索引 的：数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。
 *
 * 如果数组不存在中心索引，那么我们应该返回 -1。如果数组有多个中心索引，那么我们应该返回最靠近左边的那一个。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/find-pivot-index
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 * @date 2021/1/2811:43
 * @since V1.0
 */
public class PivotIndex724 {


    //无法使用双指针，因为如果出现负数，则无法用if来判断哪个指针移动。
    public static void main(String[] args) {
        int[] nums = {0,0,0,0,0,0};
        System.out.println(pivotIndex(nums));
    }
    //记数组的全部元素之和为 total，当遍历到第 i 个元素时，设其左侧元素之和为 sum，则其右侧元素之和为 total−num[i]−sum
    //则有 sum = total−num[i]−sum => 2sum + num[i] = total;
    public static int pivotIndex(int[] nums) {
        int total = 0;
        for (int i=0;i<nums.length;i++){
            total+=nums[i];
        }
        int sum = 0;
        for (int i=0;i<nums.length;i++){
            if (2 * sum + nums[i] == total){
                return i;
            }
            sum = sum + nums[i];
        }
        return -1;
    }


}
